package com.lagou.niancheng.rpc.common.converter;

import java.lang.reflect.Type;

/**
 * （序列化组件）转换器
 *
 * @author 大犬
 * @date 2020/4/27
 */
public interface Converter {
    /**
     * 将对象转成字节
     *
     * @param obj 对象
     * @return 返回转成的字节数组
     */
    byte[] obj2Bytes(Object obj);


    /**
     * 将字节转成对象
     *
     * @param content 字节数组
     * @param offset  偏移量
     * @param length  长度
     * @return 返回对象
     */
    Object bytes2Obj(byte[] content, int offset, int length, Type type);

    /**
     * 将字节转成对象
     *
     * @param content 字节数组
     * @return 返回对象
     */
    default Object bytes2Obj(byte[] content, Type type) {
        if (content == null) {
            return null;
        }
        return bytes2Obj(content, 0, content.length, type);
    }
}
